Navigation
阅读进度0%
No headings found.

C语言与Objective-C基础学习笔记

June 17, 2025 (7mo ago)

C
Objective-C
Memory Management

Hello word程序

# 学习
 
## 第二部分 C语言基础
 
### 变量和类型
>
> **与某块数据的联系**
 
变量和类型, 几种c语言中的数据类型,同一类的不同存储形式的 类型转换(float -> double)
 
条件表达式 和运算符 > < == != && || ! (三元运算)
 
关于画括号 {}
 
### function
>
> **与某块代码块的联系**
>
 
参数 形参 实参 标准库 局部作用域 堆栈帧, 递归 , 全局变量 静态变量,
 
### 格式化字符串 %d %f 都在这里哈
 
字符串存储, printf 函数,  %s %d %f 的含义
 
### 关于Number
 
整数 浮点数(单精度, 双精度)
 
### 关于循环♻️
 
### 关于内存 地址和指针
 
& 变量的内存地址 十六进制,指针* 去引用,某个特定类型的数据占了多少字节?, 空指针 (nil = NULL )
 
### 引用传递
 
传递引用直接用 &声明参数类型, 既得要对NULL 做判断要不然 会引发 空指针异常
 
### 结构
 
 结构 struct 成员, typedef简化 C 标准库中的 struct tm, <time.h> 时间标准库
 
### 堆栈
 
自动变量, 缓冲区 连续内存 连续内存中的指针操作  运算符-> 释放内存
 
### 突然间发现 一家好的出版社
>
> 最近在复习和阅读 OC 编程 和 学习Android编程,发现了一个非常厉害的 出版社,,我就看了一部分 真的非常给力**还是我读的书少了🔥!**
>
## 第三部分OC
 
### 对象
 
实例变量 方法 和 类 UML图的画法, 消息发送,OC语言的 命名习惯,  向消息传递参数,类的alloc 和 init , 便利方法,向nil 发消息。id ,any的定义
 
### 对象和内存
 
指针 和指针指向的对象是不同的两个东西,堆内存管理和ARC、
 
### NSString
 
初始化它,-+实例防范和类方法, NSString常用的防方法,参考手册如何查
 
### NSArray
 
NSArray ,它是一个不可改变的Array, options 快捷键的使用, 遍历它(for/快速枚举), NSMutableArray, 一些历史遗留下来的语法
 
### 第一个自定义类
 
头文件和实现文件cocoa 类,NSObject 子类,  命名规范, 快捷键, 尖括号和双引号的区别,类图的画法,存取方法(getter setter)  self(this),多个实现文件和资源(别让实现的第三方库), namespace类前缀,
 
## 重新审视 Expo
>
> 最近项目 没什么事情 可以做, 我去重新审视了一下 Expo 这个开发工具
> 还是很有东西的,它们的SDK 集成了非常的常用功能,不需要开发者 使用RN 自己去集成各种各样的鬼lib,对于小公司 简直是完美选项!没有之一
 
//
//  main.m
//  OC_NSString_NSArray
//
//  Created by administrator on 2023/8/29.
//
 
#import <Foundation/Foundation.h>
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        /**
         NSString *st1 = @"This is st1";
         NSLog(@"St1: %@", st1);
         
         NSDate *now = [[NSDate alloc] init];
         NSString *st2 = [NSString stringWithFormat: @"The Time is %@", now];
         NSLog(@"St2 %@",st2);
         
         // 常见方法举例
         //st1.length
         //BOOL *isEq = [st1 isEqualToString:@"2"];
         //*st1 = [st1 uppercaseString];
         NSString *search = @"IS";
         NSRange rang =  [st1 rangeOfString: search options:NSCaseInsensitiveSearch];
         if(rang.location != NSNotFound){
             NSLog(@"Fund %lu",(unsigned long)rang.location);
         }
         */
        
        /**
         NSDate *now = [NSDate date];
         NSDate *tm = [now dateByAddingTimeInterval:24.0 * 60.0 * 60.0];
         NSDate *yd = [now dateByAddingTimeInterval:-24.0 * 60.0 * 60.0];
         NSArray *datelist = @[now, tm, yd];
         NSLog(@"The f date %@", datelist[0]);
         NSLog(@"The s date %@", datelist[1]);
         NSLog(@"This lenght %lu", [datelist count]);
         
         // 遍历
         for (NSDate *d in datelist) {
             NSLog(@"Here is a date: %@", d);
         }
         
         // 可变的Array
         NSMutableArray *dateM = [NSMutableArray array];
         [dateM addObject:now];
         [dateM addObject:tm];
         for (NSDate *d in dateM) {
             NSLog(@"Here is a date: %@", d);
         }
         
         [dateM removeObjectAtIndex:0];
         NSLog(@"lenght %lu",[dateM count]);
         */
        
        NSString *nameString = [NSString stringWithContentsOfFile:@"/usr/share/dict/propernames" encoding:NSUTF8StringEncoding error:nil];
        NSString *wordString = [NSString stringWithContentsOfFile:@"/usr/share/dict/words" encoding:NSUTF8StringEncoding error:nil];
        
        NSArray *nameArray = [nameString componentsSeparatedByString:@"\n"];
        NSArray *wordArray = [wordString componentsSeparatedByString:@"\n"];
        
        for(NSString *name in nameArray){
            for(NSString *word in wordArray){
                NSComparisonResult res = [name caseInsensitiveCompare:@"Wolf"];
                if(res == NSOrderedSame){
                    NSLog(@"See name %@, word %@",name,word);
                }
            }
        }
    }
    return 0;
}
 
//
//  BNRPerson.m
//  CusObject
//
//  Created by administrator on 2023/8/29.
//
 
#import "BNRPerson.h"
 
@implementation BNRPerson
- (float)getH
{
    return  _h;
}
 
- (void)setH: (float)h
{
    _h = h;
}
 
- (int)getW
{
    return _w;
}
 
- (void)setW:(int)w
{
    _w =w;
}
 
- (float)bodyMassIndex
{
    return [self getW] / [self getH] * [self getH];
}
@end
 
 
//
//  BNRPerson.h
//  CusObject
//
//  Created by administrator on 2023/8/29.
//
 
#import <Foundation/Foundation.h>
 
NS_ASSUME_NONNULL_BEGIN
 
@interface BNRPerson : NSObject
// 实例变量
{
    float _h;
    int _w;
}
 
// 实例方法
- (float) getH;
- (void) setH:(float)h;
- (int) getW;
- (void) setW:(int)w;
 
- (float) bodyMassIndex;
@end
 
NS_ASSUME_NONNULL_END
 
//
//  main.m
//  CusObject
//
//  Created by administrator on 2023/8/29.
//
 
#import <Foundation/Foundation.h>
#import "BNRPerson.h"
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        BNRPerson *mky = [[BNRPerson alloc]init];
        
        [mky setH:1.8];
        [mky setW:96];
        
        NSLog(@"H -> %.2f", [mky getH]);
        NSLog(@"bmi ->%f", [mky bodyMassIndex]);
        
    }
    return 0;
}